package com.zjj.learn.javaplus.pkg01.demo12;



/**
 * 方法重写：
 *
 * @see com.zjj.learn.javaplus.pkg01.demo12.Fu1
 * 继承测试：在子类和父类中允许出现相同的成员变量
 * 当子类和父类中出现了相同的成员变量时，在子类中访问成员变量会是什么情况呢？
 * 若子类直接使用成员变量名，会使用本类的变量
 * 若需要使用父类的变量，需要使用 super 关键字
 * <p>
 * <p>
 * super代表的是父类对象的引用，this代表的是当前对象的引用。
 * @see com.zjj.learn.javaplus.pkg01.demo12.Zi1#show1()
 * @see com.zjj.learn.javaplus.pkg01.demo12.Zi1#show()
 * 针对成员方法也是如此：当子类和父类的成员方法重名时，会优先调用子类中的方法，子类中不存在时才会调用父类中的方法
 * <p>
 * 方法重写：
 * @see com.zjj.learn.javaplus.pkg01.demo12.Zi1#show()
 * @see com.zjj.learn.javaplus.pkg01.demo11.Student#desc()
 * 子类和父类出现了一模一样的方法时（返回值类型，方法名和参数列表 一模一样），就会出现重写，也叫作 复写
 * 若子类重写了 父类 中的方法，在子类上建议添加  @Override 重写校验注解
 * 若子类方法上出现了  @Override 注解，那么在父类必须有一个一模一样的方法，否则编译失败
 * <p>
 * 注意事项：
 * 1. 方法重写是发生在子父类之间的关系。
 * 2. 子类方法覆盖父类方法，必须要保证权限大于等于父类权限。
 * 3. 子类方法覆盖父类方法，返回值类型、函数名和参数列表都要一模一样。
 **/
class TestDemo02 {
    public static void main(String[] args) {
        // 创建子类对象
        Zi1 z = new Zi1();
        // 调用子类中的show方法
        z.show();

        // Zi1 show
        z.show1();
    }
}